package demo1229.lianxi;
//创建顾客吃包子线程类，继承Thread类
public class Customer extends Thread{
    //定义包子类
    Baozi bz;
    //创建构造方法，传入包子类对象
    public Customer(Baozi bz){
        this.bz = bz;
    }
    //顾客进行吃包子的过程，写在run方法中

    @Override
    public void run() {
        //进行循环，进行一直吃包子
        while (true){
            //进行锁，一旦吃包子一直结束
            synchronized (bz){
                //当首先获得执行权时要休眠；或者吃完包子要休眠
                if (bz.isFlag() == false){
                    try {
                        bz.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                //进行吃包子
                System.out.println("顾客正在吃"+
                        bz.getPi()+bz.getXian()+"包子");
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                //吃完包子进行释放cpu
                bz.setFlag(false);
                bz.notify();
                System.out.println("吃完了");
                System.out.println("==========================");
            }
        }
    }
}
